Alcoholgebruik bij jongeren: Invloed op prestaties, gewoontes en sociale factoren#

Groep F4 - Tijmen de Langen, Dion Sneekes, Wessel Bours, Zhong Ying He

Introductie#

In deze data story analyseren we hoe alcoholgebruik onder jongeren samenhangt met schoolprestaties en sociale of familiale factoren. We onderzoeken dit vanuit twee perspectieven, ondersteund door visualisaties en gegevens uit twee datasets.

In deze data story onderzoeken we hoe alcoholgebruik onder jongeren samenhangt met schoolprestaties en sociale factoren. We benaderen dit onderwerp vanuit twee perspectieven:

  • Perspectief 1: Meer alcoholgebruik leidt tot slechtere academische prestaties en vaker afwezigheid.

  • Perspectief 2: Sociale context, zoals familiebanden en ouderlijke situatie, speelt een grote rol in het alcoholgebruik van jongeren.

We gebruiken hiervoor twee datasets die informatie bevatten over alcoholgebruik, demografische gegevens, schoolprestaties en sociale gewoontes.

Dataset en preprocessing#

We maken gebruik van twee datasets van Kaggle: één over alcoholgebruik onder middelbare scholieren en één over alcohol en academische prestaties. We beschrijven de gebruikte variabelen en tonen een voorbeeld van de gegevens.

We gebruiken twee datasets:

  1. Student Alcohol Consumption – 382 rijen, 33 variabelen
    Link

  2. Effects of Alcohol on Student Performance – 406 rijen, 17 variabelen
    Link

We laden de CSV-bestanden en voeren enkele verkenningen uit.

import pandas as pd
import plotly.express as px

df1 = pd.read_csv("datasets/student-mat.csv")
df2 = pd.read_csv("datasets/Stats survey.csv")

df1.head()
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Cell In[1], line 4
      1 import pandas as pd
      2 import plotly.express as px
----> 4 df1 = pd.read_csv("datasets/student-mat.csv")
      5 df2 = pd.read_csv("datasets/Stats survey.csv")
      7 df1.head()

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\io\parsers\readers.py:1026, in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)
   1013 kwds_defaults = _refine_defaults_read(
   1014     dialect,
   1015     delimiter,
   (...)
   1022     dtype_backend=dtype_backend,
   1023 )
   1024 kwds.update(kwds_defaults)
-> 1026 return _read(filepath_or_buffer, kwds)

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\io\parsers\readers.py:620, in _read(filepath_or_buffer, kwds)
    617 _validate_names(kwds.get("names", None))
    619 # Create the parser.
--> 620 parser = TextFileReader(filepath_or_buffer, **kwds)
    622 if chunksize or iterator:
    623     return parser

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\io\parsers\readers.py:1620, in TextFileReader.__init__(self, f, engine, **kwds)
   1617     self.options["has_index_names"] = kwds["has_index_names"]
   1619 self.handles: IOHandles | None = None
-> 1620 self._engine = self._make_engine(f, self.engine)

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\io\parsers\readers.py:1880, in TextFileReader._make_engine(self, f, engine)
   1878     if "b" not in mode:
   1879         mode += "b"
-> 1880 self.handles = get_handle(
   1881     f,
   1882     mode,
   1883     encoding=self.options.get("encoding", None),
   1884     compression=self.options.get("compression", None),
   1885     memory_map=self.options.get("memory_map", False),
   1886     is_text=is_text,
   1887     errors=self.options.get("encoding_errors", "strict"),
   1888     storage_options=self.options.get("storage_options", None),
   1889 )
   1890 assert self.handles is not None
   1891 f = self.handles.handle

File ~\AppData\Local\Programs\Python\Python313\Lib\site-packages\pandas\io\common.py:873, in get_handle(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)
    868 elif isinstance(handle, str):
    869     # Check whether the filename is to be opened in binary mode.
    870     # Binary mode does not support 'encoding' and 'newline'.
    871     if ioargs.encoding and "b" not in ioargs.mode:
    872         # Encoding
--> 873         handle = open(
    874             handle,
    875             ioargs.mode,
    876             encoding=ioargs.encoding,
    877             errors=errors,
    878             newline="",
    879         )
    880     else:
    881         # Binary mode
    882         handle = open(handle, ioargs.mode)

FileNotFoundError: [Errno 2] No such file or directory: 'datasets/student-mat.csv'
df2.head()
Timestamp Your Sex? Your Matric (grade 12) Average/ GPA (in %) What year were you in last year (2023) ? What faculty does your degree fall under? Your 2023 academic year average/GPA in % (Ignore if you are 2024 1st year student) Your Accommodation Status Last Year (2023) Monthly Allowance in 2023 Were you on scholarship/bursary in 2023? Additional amount of studying (in hrs) per week How often do you go out partying/socialising during the week? On a night out, how many alcoholic drinks do you consume? How many classes do you miss per week due to alcohol reasons, (i.e: being hungover or too tired?) How many modules have you failed thus far into your studies? Are you currently in a romantic relationship? Do your parents approve alcohol consumption? How strong is your relationship with your parent/s?
0 2024/03/07 5:12:01 pm EET Female 76.0 2nd Year Arts & Social Sciences 72.0 Private accommodation/ stay with family/friends R 4001- R 5000 No 8+ Only weekends 8+ 3 0 Yes Yes Very close
1 2024/03/07 5:12:08 pm EET Male 89.0 2nd Year Economic & Management Sciences 75.0 Private accommodation/ stay with family/friends R 7001 - R 8000 Yes (NSFAS, etc...) 8+ Only weekends 3-5 4+ 0 No Yes Very close
2 2024/03/07 5:12:25 pm EET Male 76.0 1st Year AgriSciences 55.0 Private accommodation/ stay with family/friends R 4001- R 5000 No 3-5 2 8+ 3 0 No Yes Very close
3 2024/03/07 5:12:28 pm EET Male 89.0 2nd Year Engineering 84.0 Private accommodation/ stay with family/friends R 6001 - R 7000 No 3-5 3 8+ 2 0 Yes Yes Very close
4 2024/03/07 5:13:00 pm EET Female 74.0 2nd Year Arts & Social Sciences 52.0 Private accommodation/ stay with family/friends R 4001- R 5000 No 3-5 Only weekends 5-8 1 3 No Yes Fair

Perspectief 1: Alcoholgebruik beïnvloedt academische prestaties#

We onderzoeken of er een verband is tussen alcoholgebruik op doordeweekse dagen en studietijd, afwezigheid en schoolcijfers.: Alcoholgebruik beïnvloedt academische prestaties

We verwachten dat jongeren die meer alcohol gebruiken slechtere cijfers halen en vaker afwezig zijn. Hieronder bekijken we verschillende grafieken die deze relatie inzichtelijk maken.

fig = px.box(df1, x="Pstatus", y="Dalc", color="Pstatus",
             title="Weekdag-alcoholgebruik (Dalc) naar ouderlijke status (Pstatus)",
             labels={"Pstatus": "Ouderlijk statuut", "Dalc": "Alcoholgebruik doordeweeks"})

fig.update_layout(height=500)
../_images/794e174b3dc4796587479871f24775788039543a37c2f97eec45788952c3f007.png

Conclusie: Doordeweeks alcoholgebruik en ouderlijke status#

Deze boxplot toont het doordeweeks alcoholgebruik (Dalc) van studenten op een schaal van 1 tot 5, opgesplitst naar ouderlijke status (Pstatus).

  • Gemiddeld doordeweeks gebruik:

    • Gescheiden ouders (A): 1.66

    • Samenwonende ouders (T): 1.48

  • Mediaan:

    • A: 1.0

    • T: 1.0

  • Spreiding:

    • Standaardafwijking A: 1.04

    • Standaardafwijking T: 0.79

Interpretatie: Studenten met gescheiden ouders drinken doordeweeks gemiddeld iets meer alcohol dan studenten met samenwonende ouders. Hoewel de mediaan in beide groepen gelijk is (1.0), wijst de hogere standaarddeviatie bij Pstatus = A op meer variatie: er zijn in die groep dus zowel studenten die bijna niet drinken als studenten die aanzienlijk meer drinken.

Deze boxplot laat zien dat studenten met gescheiden ouders (Pstatus = A) gemiddeld vaker alcohol consumeren op doordeweekse dagen dan studenten met samenwonende ouders (Pstatus = T). Dit ondersteunt het idee dat thuissituatie invloed heeft op alcoholgebruik.

fig = px.scatter(df1, x="studytime", y="absences", color="age",
                 title="Studietijd vs Afwezigheid (ingekleurd op leeftijd)",
                 labels={"studytime": "Studietijd", "absences": "Afwezigheid", "age": "Leeftijd"})

fig.update_layout(height=500)
../_images/db15b77141deb426a9a2d21c41e8ac667ef3b41a8caa64662cf2421329370739.png

📊 Analyse van de grafiek “Studietijd vs Afwezigheid (ingekleurd op leeftijd)”#

De plot toont het volgende:

  1. Studietijd (1–4):

    • De meeste studenten bevinden zich op niveau 1 of 2, wat overeenkomt met <2 uur tot 5 uur studietijd per week.

    • Niveau 4 (>10 uur) komt zelden voor.

  2. Afwezigheid (absences):

    • De mediaan ligt op 4, met een uitschieter tot 75.

    • Veel studenten hebben tussen de 0 en 8 afwezigheden; extreem hoge waarden zijn zeldzaam.

  3. Kleuren (leeftijd):

    • Leeftijd varieert van 15 t/m 22 jaar.

    • Jongere studenten (15–16 jaar) en oudere studenten (18–22 jaar) zijn gemengd verspreid over het hele plot zonder duidelijk patroon.

  4. Relatie studietijd en afwezigheid:

    • Er is géén sterke negatieve of positieve correlatie zichtbaar. Studenten met weinig studietijd zijn niet per se meer afwezig dan studenten met veel studietijd.

    • Afwezigheid lijkt vrij willekeurig verdeeld over de studietijdniveaus.

  5. Leeftijd en gedrag:

    • Oudere studenten zijn iets vaker aanwezig in de groep met hogere afwezigheid, maar dit is niet eenduidig.

    • Leeftijd heeft weinig zichtbaar effect op de relatie tussen studietijd en afwezigheid.

✅ Aangepaste conclusie#

Op basis van de scatterplot tussen studietijd en afwezigheid, waarin leeftijd is meegenomen als kleuraspect, kunnen we concluderen dat er geen sterke directe relatie is tussen hoeveel een student studeert en hoe vaak deze afwezig is.

Hoewel sommige studenten met weinig studietijd vaker afwezig zijn, komt dit beeld niet consequent terug. Er zijn ook studenten die weinig studeren maar wél goed aanwezig zijn, net zoals er studenten zijn die veel studeren maar toch vaak afwezig zijn. Dit suggereert dat andere factoren dan studietijd mogelijk een sterkere rol spelen bij schoolverzuim, zoals motivatie, gezondheid of thuissituatie.

Wat betreft leeftijd zien we geen duidelijke invloed op dit verband: studenten van verschillende leeftijden zijn zowel bij de lage als de hoge afwezigheidsniveaus vertegenwoordigd. Hierdoor kunnen we niet stellen dat leeftijd een modererende rol speelt in de relatie tussen studietijd en afwezigheid.

De scatterplot laat een zwak negatief verband zien tussen studietijd en afwezigheid (correlatie ≈ -0.14): studenten die meer studeren, zijn iets minder vaak afwezig. De spreiding is echter groot en leeftijd lijkt deels samen te hangen met beide variabelen. Er zijn dus mogelijk meerdere onderliggende verklaringen.

Er is een zwakke negatieve samenhang zichtbaar tussen studietijd en afwezigheid: studenten die meer studeren, zijn gemiddeld minder vaak afwezig. Oudere studenten (donkerder gekleurd) hebben soms hogere absenties ondanks hogere studietijd, wat kan wijzen op andere onderliggende factoren.

heatmap_data = df1.groupby(['age', 'famrel'])['Dalc'].mean().reset_index()
fig = px.density_heatmap(heatmap_data, x='age', y='famrel', z='Dalc', color_continuous_scale='Blues',
                         title="Gemiddeld alcoholgebruik (Dalc) per leeftijd en familieband")

fig.update_layout(height=500)
../_images/d2c30a2993d177f50bb1b3e3bbc1bd5b4825aadb72685d2c62e308ac39b8dc6e.png

Analyse van de heatmap “Gemiddeld alcoholgebruik per leeftijd en familieband (Dalc)”#

Deze heatmap laat het gemiddelde doordeweeks alcoholgebruik (Dalc) zien, gegroepeerd per leeftijd en kwaliteit van de familierelatie (Famrel).

  1. Leeftijd (x-as):

    • Leeftijd varieert van 15 tot 22 jaar.

    • Er zijn duidelijk minder studenten in de hoogste en laagste leeftijden, met de meeste studenten tussen 16 en 18.

  2. Famrel (y-as):

    • De schaal loopt van 1 (zeer slecht) tot 5 (zeer goed).

    • Er zijn relatief weinig studenten met een lage familiebandscore (1 of 2), het meeste valt tussen 3 en 5.

  3. Alcoholgebruik (Dalc):

    • Hogere alcoholconsumptie is vaker zichtbaar bij studenten met een lagere kwaliteit van familiebanden (Famrel = 1 of 2).

    • Bij vrijwel alle leeftijden geldt dat slechtere familiebanden samenhangen met iets hogere Dalc-waarden.

    • De kleurverzadiging laat zien dat de combinatie van jongere leeftijd en slechte familiebanden gemiddeld het hoogste doordeweekse alcoholgebruik oplevert.

  4. Opvallendheden:

    • Sommige blokken missen data (geen kleur); dit betekent dat er in de dataset geen studenten waren met die specifieke combinatie van leeftijd en familieband.

    • De kleurgradiënt is subtiel, maar suggereert structureel verband tussen gezinsrelaties en alcoholgebruik.

Conclusie#

De heatmap toont aan dat er een zichtbare relatie bestaat tussen de kwaliteit van de familierelatie (Famrel) en het doordeweekse alcoholgebruik (Dalc) onder middelbare scholieren. In het bijzonder is te zien dat slechtere familiebanden (score 1–2) gepaard gaan met hogere gemiddelde alcoholconsumptie, ongeacht de leeftijd van de student.

Hoewel leeftijd op zichzelf geen extreem verschil laat zien in Dalc-waarden, wordt bij jongere studenten met zwakkere familiebanden relatief meer alcoholgebruik gerapporteerd. Dit suggereert dat sociale en relationele factoren binnen het gezin een belangrijkere rol spelen dan leeftijd bij het verklaren van doordeweeks alcoholgebruik.

De resultaten ondersteunen de tweede invalshoek van ons verhaal: dat de thuissituatie en familiecontext van jongeren een significante invloed heeft op hun alcoholgedrag.

Perspectief 2: Sociale factoren beïnvloeden alcoholgebruik#

We analyseren of factoren zoals de relatie met ouders, sociale activiteit en financiële middelen invloed hebben op het drinkgedrag van studenten.: Sociale factoren beïnvloeden alcoholgebruik

Sociale relaties, zoals de band met ouders of het uitgavenpatroon, kunnen bijdragen aan het alcoholgebruik van jongeren.

fig = px.scatter(
    df2,
    x="Additional amount of studying (in hrs) per week",
    y="Your 2023 academic year average/GPA in % (Ignore if you are 2024 1st year student)",
    color="How often do you go out partying/socialising during the week? ",
    title="Studietijd vs Cijfers (ingekleurd op sociale activiteit)",
    labels={
        "Additional amount of studying (in hrs) per week": "Studie-uren",
        "Your 2023 academic year average/GPA in % (Ignore if you are 2024 1st year student)": "Cijfergemiddelde",
        "How often do you go out partying/socialising during the week? ": "Sociale activiteit"
    }
)

fig.update_layout(height=500)

Analyse van de scatterplot “Studietijd vs Cijfers (ingekleurd op sociale activiteit)”#

De scatterplot vergelijkt hoeveel uur studenten wekelijks besteden aan extra studietijd met hun gemiddelde cijfer (GPA). Elke stip is een student, en de kleur toont hoe vaak deze persoon in de week uitgaat of sociaal actief is.

  1. Studie-uren (x-as):

    • De as is ingedeeld in categorische blokken: 0, 1–3, 3–5, 5–8, 8+ uur.

    • In de 0‑uurscategorie vallen de minste leerlingen.

    • De aantallen in de 1–3 categorie en 8+ categorie zijn vergelijkbaar, zoals de aantallen in de 3–5 categorie en 5–8 categorie.

  2. Cijfergemiddelde (y-as):

    • De cijfers variëren van 30% tot 90%.

    • In de 8+‑uursgroep behalen zeven studenten voor het merendeel een score van ≥ 80%.

  3. Sociale activiteit (kleur):

    • De kleurencode toont de frequentie van sociale activiteit (van weinig tot frequent).

    • Studenten met 4+ sociale activiteiten per week studeren meestal 0–3 uur en behalen zeer uiteenlopende cijfers (30%–80%).

Conclusie#

Hoewel er geen sterk lineair verband is tussen studietijd en GPA (de correlatie is beperkt door ontbrekende data), behalen studenten die zeer veel studeren (8+ uur) relatief vaak hoge cijfers (≥ 80%). Tegelijkertijd zien we dat studenten met een hoge sociale activiteit (4+ keer per week) gemiddeld iets lagere cijfers behalen en meestal minder studietijd (0–3 uur) rapporteren. Dit suggereert dat intensief uitgaan mogelijk ten koste gaat van academische focus en dat een evenwicht tussen studietijd en sociale activiteiten cruciaal is voor het behalen van betere resultaten.

fig = px.box(
    df2,
    x="How strong is your relationship with your parent/s?",
    y="On a night out, how many alcoholic drinks do you consume?",
    color="How strong is your relationship with your parent/s?",
    title="Aantal drankjes per avond naar ouderlijke relatie",
    labels={
        "How strong is your relationship with your parent/s?": "Relatie met ouders",
        "On a night out, how many alcoholic drinks do you consume?": "Drankjes per avond"
    }
)



fig.update_layout(height=500)

De boxplot toont dat studenten die een zwakke band met hun ouders rapporteren, gemiddeld meer drankjes per avond nuttigen. Sterkere ouder-kindrelaties lijken geassocieerd te zijn met gematigder drinkgedrag. Het verschil in spreiding en mediaan ondersteunt dit patroon.

Studenten die een slechtere band met hun ouders rapporteren (hoger getal bij Parent-Strength) drinken gemiddeld meer per avond. De sterkste ouderlijke banden hangen samen met het laagste aantal drankjes per avond.

col = "How many classes do you miss per week due to alcohol reasons, (i.e: being hungover or too tired?)"

fig = px.histogram(
    df2,
    x=col,
    nbins=10,
    title="Verdeling van gemiste lessen door alcoholgebruik",
    labels={col: "Gemiste lessen"},
    category_orders={col: sorted(df2[col].dropna().unique())}
)
fig.show()

fig.update_layout(height=400)
fig.update_layout(height=500)

Het histogram laat zien dat de meeste studenten weinig tot geen lessen missen door alcoholgerelateerde redenen. Toch is er een duidelijke groep die wekelijks meerdere lessen mist (2–4), wat wijst op een significante negatieve impact van alcoholgebruik op aanwezigheid en mogelijk leerprestaties.

De meeste studenten missen weinig tot geen lessen vanwege alcoholgebruik. Toch is er een aanzienlijke groep die 2 tot 4 lessen per week mist, wat duidt op een serieuze impact van alcohol op academische aanwezigheid.

Reflectie#

Deze sectie zal worden aangevuld na het feedbackmoment. Hier reflecteren we op ontvangen feedback en hoe deze is toegepast.

Deze sectie zal worden ingevuld na het peer feedback moment. Hier beschrijven we hoe de feedback van anderen ons geholpen heeft bij het verbeteren van onze visualisaties en argumenten.

Werkverdeling#

  • Tijmen de Langen: Visualisaties uit Dataset 1

  • Dion Sneekes: Data preprocessing en ondersteuning

  • Wessel Bours: Visualisaties uit Dataset 2 en correlatieanalyse

  • Zhong Ying He: Structuur, tekstuele uitwerking en argumentatie

  • Tijmen de Langen: Verantwoordelijk voor visualisaties uit Dataset 1

  • Dion Sneekes: Dataset cleaning en preprocessing

  • Wessel Bours: Analyse en visualisaties uit Dataset 2

  • Zhong Ying He: Verantwoordelijk voor structuur, introductie en argumentatie